// cf-31e
// 题意：给定一个2*n(n<=16)长度的数字串，两个人可以任意次序的从这个序列
//       最左边取一个数然后加到自己数的最右边，两个人初始数是空，然后每
//       个人必需要取n次。任意输出一种使得最后两个人得到数字的和最大的
//       取的次序方案。
//
// 题解：很水的dp。这题不应该是E题也不应该是2500。
//
// run: $exec < input
#include <iostream>
#include <string>

int const maxn = 50;
unsigned long long p10[20];
unsigned long long f[maxn][maxn];
int from[maxn][maxn];
int n;
std::string s;

void print()
{
	std::string s;
	for (int i = 2 * n, j = n; i; j = from[i--][j])
		if (from[i][j] == j) s = s + "H";
		else s = s + "M";
	std::cout << s << '\n';
}

int main()
{
	std::ios::sync_with_stdio(false);
	p10[0] = 1;
	for (int i = 1; i < 20; i++) p10[i] = p10[i - 1] * 10;
	std::cin >> n;
	std::cin >> s;
	for (int i = 1; i <= 2 * n; i++) {
		int tn = s[2 * n - i] - '0';
		for (int j = std::max(i - n, 0); j <= std::min(n, i); j++) {
			if (j > 0) {
				auto tmp = f[i - 1][j - 1] + tn * p10[j - 1];
				if (tmp >= f[i][j]) {
					f[i][j] = tmp;
					from[i][j] = j - 1;
				}
			}
			if (i - 1 >= j && j >= i - 1 - n) {
				auto tmp = f[i - 1][j] + tn * p10[i - j - 1];
				if (tmp >= f[i][j]) {
					f[i][j] = tmp;
					from[i][j] = j;
				}
			}
		}
	}
	print();
//	std::cout << f[2 * n][n] << '\n';
}

